/**
 * Historico de alteração
 *
 * Data         Autor   Descrição
 * 24/10/2010   Jerry   Criação do cabeçalho.
 *
 */

package railbee.execucao;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.GregorianCalendar;

import railbee.banco.dao.TrensDao;
import railbee.banco.dto.Trens;
import railbee.banco.exceptions.TrensDaoException;
import railbee.banco.factory.TrensDaoFactory;
import railbee.execucao.zigbee.PacoteRailbee;
import railbee.execucao.zigbee.Xbee;
import railbee.log.LogRailBee;

public class ExecutTrens extends Execut {
	// Thread tremThread = new Thread();
	private TrensDao trensDao = null;
	private Connection conn;
	private GregorianCalendar data = new GregorianCalendar();

	public void inicializarDaos(String nomeTabela) throws SQLException {
		// tremThread.start();
		conn = super.abrirConexao();
		// servidoresDao.setNomeTabela(nomeTabela);
		trensDao = TrensDaoFactory.create(conn, nomeTabela);
	}

	public Trens setRegistro(PacoteRailbee pacote) {
		Trens trem = new Trens();
		trem.setData(data.getTime());
		trem.setHora(data.getTime());
		trem.setEstacao(pacote.getEstacao());
		trem.setVelocidade(pacote.getVelocidade());
		trem.setPressao(pacote.getPressao());
		trem.setTensao(pacote.getTensao());
		trem.setCorrente(pacote.getCorrente());
		trem.setPosicao(pacote.getPosicao());
		trem.setNumPassageiros(pacote.getNumPassageiros());
		
		return trem;
	}

	public void testaPacote() throws InterruptedException {
		// while(true){
		Xbee xbee = new Xbee();
		PacoteRailbee pacRail = new PacoteRailbee();
		String pacote = xbee.gerarPacote();
		pacRail = pacRail.extrairDadosPacote(pacote);
		// inserir(setRegistro(pacote));
		// System.out.println(pacRail.getVelocidade());
		data = new GregorianCalendar();
		if (inserir(setRegistro(pacRail))) {
			//System.out.println("ok");
			Thread.sleep(500);
		}
		// }
	}

	public void encerrar() {
		try {
			super.fecharConexao();
			// tremThread.;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public boolean inserir(Trens trem) {

		try {
			trensDao.insert(trem);
			// LogRailBee.logaNumeroNovosRegistros(1);
			return true;
		} catch (TrensDaoException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return false;
	}

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		ExecutTrens exec = new ExecutTrens();
		String nomeTb = "trem01";
		exec.inicializarDaos(nomeTb);
		for (int i = 0; i < 5; i++) {
			exec.testaPacote();
		}
		exec.encerrar();

		// execServ.inserir(execServ.setRegistro());
		// execServ.exibirRegistros();
		// execServ.fecharConexao();

	}

}
